<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>group</title>
  <script>

    /**
     * gruop(callback,[thisArg])方法根据提供的测试函数返回的字符串值对调用数组的元素进行分组。
     * 返回的对象对每个组都有单独的属性，包含组中元素的数组。
     * 当组名可以用字符串表示时，应该使用此方法。如果您需要使用某个任意值的键对元素进行分组，请使用Array.prototype.groupToMap()。
     * 返回值是一个空原型对象，具有所有组的属性，每个组分配给一个包含关联组元素的数组。
     */

    const array = [
      { name: "张三", address: "四川" },
      { name: "李四", address: "四川" },
      { name: "王五", address: "上海" },
      { name: "小明", address: "四川" },
      { name: "小花", address: "上海" },
    ]

    // 将四川的人员归为蜀，将上海的人员归为沪
    const groupObj = array.group(({ address }, index, array) => {
      return address === "四川" ? "蜀" : "沪";
    })

    console.log(groupObj);
    // {
    //   "蜀": [
    //     { name: "张三", address: "四川" },
    //     { name: "李四", address: "四川" },
    //     { name: "小明", address: "四川" },
    //   ],
    //   '沪': [
    //     { name: "王五", address: "上海" },
    //     { name: "小花", address: "上海" },
    //   ]
    // }

    /**
     * 该属性目前只有 Safari 16.4 和 Safari on iOS 16.4 支持
     * 其他浏览器暂不支持
     */


  </script>
</head>

<body>

</body>

</html>